package com.springmvc.controller;

import com.springmvc.po.User;
import com.springmvc.vo.UserVO;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;
import java.util.List;

@Controller
public class UserController {
    @RequestMapping("/selectUser")
    public String selectUser(Integer id) {
        System.out.println("user_id="+id);
        return "success";
    }
/*    public String selectUser(HttpServletRequest request) {
        String id = request.getParameter("id");
        System.out.println("id="+id);
        return "success";
    }*/


    /**
     * 向用户注册页面跳转
     */

    @RequestMapping("/toRegister")
    public String toRegister( ) {
        return "register";
    }
    /**
     * 接收用户注册信息
     */
    @RequestMapping("/registerUser")
    public String registerUser(User user) {
        String username = user.getUsername();
        String password = user.getPassword();
        System.out.println("username="+username);
        System.out.println("password="+password);
        return "success";
    }

    /**
     * 向用户列表页面跳转
     */
    @RequestMapping("/toUser")
    public String selectUsers( ) {
        return "user";
    }
    /**
     * 接收批量删除用户的方法
     */
    @RequestMapping("/deleteUsers")
    public String deleteUsers(Integer[] ids) {
        if(ids !=null){
            for (Integer id : ids) {
                // 使用输出语句模拟已经删除的用户
                System.out.println("删除了 id 为"+id+"的用户！");
            }
        }else{
            System.out.println("ids=null");
        }
        return "success";
    }
    /**
     * 向用户批量修改页面跳转
     */
    @RequestMapping("/toUserEdit")
    public String toUserEdit() {
        return "user_edit";
    }
    /**
     * 接收批量修改用户的方法
     */
    @RequestMapping("/editUsers")
    public String editUsers(UserVO userList) {
        // 将所有用户数据封装到集合中
        List<User> users = userList.getUsers();
        // 循环输出所有用户信息
        for (User user : users) {
            // 如果接收的用户 id 不为空，则表示对该用户进行了修改
            if(user.getId() !=null){
                System.out.println("修改了 id 为"+user.getId()+"的用户名为："+user.getUsername());
            }else {
                System.out.println("用户ID为空");
            }
        }
        return "success";
    }
    /**
     * 向json测试页面跳转
     */
    @RequestMapping("/toJsonTest")
    public String toJsonTest() {
        return "jsontest";
    }
    /**
     * 接收页面请求的 JSON 数据，并返回 JSON 格式结果
     */
    @RequestMapping("/testJson")
    @ResponseBody
    public User testJson(@RequestBody User user) {
        // 打印接收的 JSON 格式数据
        System.out.println(user);
        // 返回 JSON 格式的响应
        return user;
    }

    @RequestMapping("/torestful")
    public String toRestfult() {
        return "restful";
    }
    /**
     *接收 RESTful 风格的请求，其接收方式为 GET
     */
    @RequestMapping(value="/user/{id}",method= RequestMethod.GET)
    @ResponseBody
    public User selectUser(@PathVariable("id") String id){
        //查看数据接收
        System.out.println("id="+id);
        User user=new User();
        //模拟根据 id 查询出到用户对象数据
        if(id.equals("1234")){
            user.setUsername("tom");
        }
        //返回 JSON 格式的数据
        return user;
    }
    /**
     * 向用户登录页面跳转
     */
    @RequestMapping(value="/login",method=RequestMethod.GET)
    public String toLogin() {
        return "login";
    }
    /**
     * 用户登录
     */
    @RequestMapping(value="/login",method=RequestMethod.POST)
    public String login(User user, Model model, HttpSession session) {
        // 获取用户名和密码
        String username = user.getUsername();
        String password = user.getPassword();
        // 此处模拟从数据库中获取用户名和密码后进行判断
        if(username != null && username.equals("xiaoxue")
                && password != null && password.equals("123456")){
            // 将用户对象添加到 Session
            session.setAttribute("USER_SESSION", user);
            // 重定向到主页面的跳转方法
            return "redirect:main";
        }
        model.addAttribute("msg","用户名或密码错误，请重新登录！");
        return "login";
    }
    /**
     * 向用户主页面跳转
     */
    @RequestMapping(value="/main")
    public String toMain() {
        return "main";
    }
    /**
     * 退出登录
     */
    @RequestMapping(value = "/logout")
    public String logout(HttpSession session) {
        // 清除 Session
        session.invalidate();
        // 重定向到登录页面的跳转方法
        return "redirect:login";
    }
}
